#include <stdlib.h>   // NULL
#include <sys/time.h> // timeval / gettimeofday()
#include"app_common.h"
#include<stdio.h>
#include<string.h>

long app_common_getCurrentTime(void)
{
    struct timeval tv;
    // 获取当前时间
    gettimeofday(&tv, NULL);

    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
    // tv_sec: 秒  tv_usec: 微秒
}

/**
* @brief   字符数组转为对应的十六进制字符串
* @param chars           字符数组
* @param chars_len       字符数组长度
* @return char*         转换生成的十六进制字符串
*/
char* app_common_charsToHexstr(char* chars, int chars_len)
{
    char * hex_str = malloc((size_t)chars_len * 2 +1);
    for (int i = 0; i < chars_len; i++)
    {
        sprintf(hex_str + i*2, "%02X", chars[i]);
    }
    hex_str[chars_len * 2] = '\0';

    return hex_str;
}

/**
* @brief          十六进制字符串转为对应的字符数组
* @param hex_str          十六进制字符串
* @param chars_len        接收生成的字符数组长度的指针
* @return char* 转换生成的字符数组
*/
char* app_common_hexstrToChars(char* hex_str, int*chars_len)
{
    int len = strlen(hex_str);
    //字符数组长度
    *chars_len = len / 2;
    char *chars = (char *)malloc(*chars_len);

    for (int i = 0; i < len - 1; i += 2)
    {
        sscanf(hex_str + i, "%02X", (unsigned int *)(chars + i / 2));
    }
    return chars;
}


